package com.suxin.security.builder;

import com.suxin.security.DefaultSecurityFilterChain;
import com.suxin.security.configure.SecurityConfigure;

import javax.servlet.Filter;

/**
 * @author Tang
 * @classname HttpSecurityBuilder
 * @description [  ]
 * @date 2022/8/17 10:22
 */
public interface HttpSecurityBuilder<H extends HttpSecurityBuilder<H>> extends SecurityBuilder<DefaultSecurityFilterChain> {

    /**
     * getConfigurer
     * @param <C>
     * @return
     */
    <C extends SecurityConfigure<DefaultSecurityFilterChain, H>> C getConfigurer(Class<C> cClass);

    /**
     * remove
     * @param cClass
     */
    <C extends SecurityConfigure<DefaultSecurityFilterChain, H>> C removeConfigure(Class<C> cClass);

    /**
     * addFilter
     * @param filter
     * @return
     */
    H addFilter(Filter filter);

}
